#pragma once
#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<stdlib.h>
//对一些重要变量的重定义，方便修改
#define Max 100
#define Max_Name 20
#define Max_Sex 5
#define Max_Tele 12
#define Max_Addr 30
#define DEFAULT_SZ 3
#define INC_SZ 2
//对case语句的枚举，使其更加易理解
enum OPTIOON
{
	Exit,
	Add,
	Del,
	Search,
	Modify,
	Show,
	Clean,
	Sort
};
//联系人结构体
typedef struct PeoInfo
{
	char name[Max_Name];
	int age;
	char sex[Max_Sex];
	char tele[Max_Tele];
	char addr[Max_Addr];

}PeoInfo;

//通讯录结构体
typedef struct contact
{
	PeoInfo* data;
	int sz;
	int capacity;

}contact;
//初始化通讯录函数的声明
void Init_Contact(contact* pc);
//增加联系人函数的声明
void Add_Contact(contact* pc);
//删除联系人函数的声明
void Del_Contact(contact* pc);
//搜索联系人函数的声明
void Search_Contact(contact* pc);
//修改联系人函数的声明
void Modify_Contact(contact* pc);
//展示联系人函数的声明
void Show_Contact(contact* pc);
//清空所有联系人
void Clean_Contact(contact* pc);
//按名字排序所有联系人
void Sort_Contact(contact* pc);

int cmp_name(const void* p1, const void* p2);


